4.9 Series字符长度、重复、修剪处理
1、字符长度
字符串长度计算在excel中用len()函数,在pandas中使用s.str.len()函数, 也可以用s.str.count()函数,因为s.str.count()函数支持正则表达式,所以更灵活,结构如下:
s.str.count(pat,flags=0)
pat :有效的正则表达式
flags :re模块中的标记
import pandas as pd
s=pd.Series([ "张三100","李四54","王麻子78杨钧94","李明83狗子140" ])
print (s.str.len())
print (s.str.count( "\d+" ))
print (s.str.count( "[89]\d|\d{3,}" ))
返回:
0 | 5 |
1 | 4 |
2 | 9 |
3 | 9 |
dtype: int64
0 | 1 |
1 | 1 |
2 | 2 |
3 | 2 |
dtype: int64
0 | 1 |
1 | 0 |
2 | 1 |
3 | 2 |
dtype: int64
2、字符重复
s.repeat()函数,可以重复Series数据中的元素,而s.str.repeat()函数可以重复Series数据中每个元素的内容, 这两个参数都只有1个参数。
import pandas as pd
s=pd.Series([ "过","份","了" ])
print (s.repeat( 3 ))
print (s.str.repeat( 3 ))
print (s.str.repeat([ 1,2,3 ])) #与元素对应
返回:
0 | 过 |
0 | 过 |
0 | 过 |
1 | 份 |
1 | 份 |
1 | 份 |
2 | 了 |
2 | 了 |
2 | 了 |
dtype: object
0 | 过过过 |
1 | 份份份 |
2 | 了了了 |
dtype: object
0 | 过 |
1 | 份份 |
2 | 了了了 |
dtype: object
3、Series元素的修剪
修剪空白字符,在Excel中使用Trim()函数,此函数是将两侧的空白值删除,如果字符中间有空白, 则只保留一个。而pandas中的修剪,是可以从字符串两侧,或者从左侧,或者从右侧删除指定的字符,有3个对应的函数。
Str.strip(to_strip=None) 表示从两侧修剪
Str.lstrip(to_strip=None) 表示从左侧修剪
Str.rstrip(to_strip=None) 表示从右侧修剪
To_strip 表示要删除的字符,如果不指定,则修剪空白字符。
import pandas as pd
s=pd.Series([ "and","123-789you456 "," 李四" ])
print (s.str.strip().str.len())
print (s.str.lstrip().str.len())
print (s.str.strip( "0123456789" )) #删除两侧的空白符,如果右侧有空白符,则无法删除
print (s.str.strip( "0123456789-" )) #数字中间有-线,则可以在表达式后面加-
返回:
0 | 3 |
1 | 13 |
2 | 4 |
dtype: int64
0 | 4 |
1 | 14 |
2 | 5 |
dtype: int64
0 | and |
1 | -789you456 |
2 | 李四 |
dtype: object
0 | and |
1 | you456 |
2 | 李四 |
dtype: object